package com.example.fashion.android.base.BaseActivity;

/**
 * Created by fashion on 2017/7/4.
 */

import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.ViewGroup;
import android.widget.RelativeLayout;

import com.example.fashion.android.R;
import com.example.fashion.android.globar.AppManager;
import com.example.fashion.android.util.ToastUtil;
import com.example.fashion.android.view.TitleBar;


/**
 * 重写的一个Activity 的基类，在基类中实现了一个TitleBar 用TitleBar来展示一个标题
 * 同时定义一个Back按钮，点击的时候退出当前的Activity
 */
public abstract class BaseActivity extends AppCompatActivity {

    //Activity管理对象
    public AppManager mAppManager;

    //弹出Toast的工具类
    public ToastUtil mToastUtil;

    //自定义的title
    public TitleBar mCustomTitleBar;

    //系统自带的title
    public Toolbar mSystemToolBar;

    //标题栏高度
    public static final int TITLE_BAR_HEIGHT = 80;

    /**
     * 初始化
     */
    public void init() {
        //添加到mAppManager
        mAppManager = mAppManager.getInstance();
        mAppManager.addActivity(this);
        mToastUtil = ToastUtil.getInstance(this);
    }


    /**
     * 加载布局
     *
     * @param layoutResID
     */
    @Override
    public void setContentView(int layoutResID) {
        // TODO Auto-generated method stub
        super.setContentView(layoutResID);

        init();
        //显示标题栏
        showSystemTitleBar();
        //初始化View
        initView();
        //初始化数据
        initData();
    }

    @Override
    public void setContentView(View view) {
        super.setContentView(view);
        init();
        //显示标题栏
        showSystemTitleBar();
        //初始化View
        initView();
        //初始化数据
        initData();
    }

    /**
     * 显示自定义的TitleBar
     */
    public void showCustomTitleBar() {
        mCustomTitleBar = new TitleBar(this);
        //将title添加到视图中
        addContentView(mCustomTitleBar, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, TITLE_BAR_HEIGHT));
    }

    /**
     * 显示系统的titleBar
     */
    public void showSystemTitleBar() {
        mSystemToolBar = new Toolbar(this);
        //设置title的图标
        mSystemToolBar.setNavigationIcon(R.drawable.back);
        //设置title距离左侧的距离
        mSystemToolBar.setContentInsetStartWithNavigation(10);
        //设置title的背景颜色
        mSystemToolBar.setBackgroundResource(android.R.color.holo_blue_light);
        //设置title图标的点击事件
        mSystemToolBar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                finishActivity();
            }
        });
        //将title添加到视图中
//        addContentView(mSystemToolBar, new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, TITLE_BAR_HEIGHT));
        addContentView(mSystemToolBar, new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT));
    }

    /**
     * 设置系统的titleName
     *
     * @param titleName
     */
    public void setSystemTitleName(String titleName) {
        if (mSystemToolBar != null) {
            mSystemToolBar.setTitle(titleName);
        }
    }

    /**
     * 隐藏系统的标题栏
     */
    public void hideSystemTitleBar() {
        if (mSystemToolBar != null) {
            //显示标题栏
            mSystemToolBar.setVisibility(View.GONE);
        }
    }

    /**
     * 设置自定义的titleName
     *
     * @param titleName
     */
    public void setCustomTitleName(String titleName) {
        if (mCustomTitleBar != null) {
            mCustomTitleBar.setTitle(titleName);
        }
    }


    @Override
    protected void onResume() {
        super.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
//        unregisterReceiver(receiver);
        //还可能发送统计数据，比如第三方的SDK 做统计需求
    }
//    BroadcastReceiver receiver = new BroadcastReceiver() {
//        @Override
//        public void onReceive(Context context, Intent intent) {
//            // 处理各种情况
//            String action = intent.getAction();
//            if (ACTION_NETWORK_CHANGE.equals(action)) { // 网络发生变化
//                // 处理网络问题
//            } else if (ACTION_PUSH_DATA.equals(action)) { // 可能有新数据
//                Bundle b = intent.getExtras();
//                MData<Employee> mdata = (MData<Employee>) b.get("data");
//                if (dataCallback != null) { // 数据通知
//                    dataCallback.onNewData(mdata);
//                }
//            } else if (ACTION_NEW_VERSION.equals(action)) { // 可能发现新版本
//                // VersionDialog 可能是版本提示是否需要下载的对话框
//            }
//        }
//    };

    /**
     * 头部标题的点击事件
     */
    public void onTitleClick() {

    }

    /**
     * 结束当前Activity
     */
    public void finishActivity() {
        this.finish();
    }

    /**
     * 当我们程序中的所有UI组件全部不可见的时候会触发
     *
     * @param level
     */
    @Override
    public void onTrimMemory(int level) {
        super.onTrimMemory(level);
        switch (level) {
            case TRIM_MEMORY_UI_HIDDEN:
                // 进行资源释放操作
                break;
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mAppManager.finishActivity(this);
        clear();
    }

    //回收资源的操作
    protected abstract void clear();

    //初始化View
    public abstract void initView();

    //初始化数据
    public abstract void initData();
}
